<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "../DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Unique Factorization Domain package</title>
  </head>

  <body>
    <h1>Unique factorization domain package.</h1>

<p>
  This package contains classes for polynomials rings as unique factorization domains.
  Provided methods with interface <code>GreatestCommonDivisor</code> 
  are e.g. greatest common divisors <code>gcd()</code>, primitive part <code>primitivePart()</code>
  or <code>coPrime()</code>.
  The different classes implement variants of polynomial remainder sequences (PRS) 
  and modular methods.
  Interface <code>Squarefree</code> provides the greatest squarefree factor 
  <code>squarefreeFactor()</code> and a complete squarefree decompostion can be obtained 
  with method <code>squarefreeFactors()</code>.
  There is a <code>Factorization</code> interface with an 
  <code>FactorAbstract</code> class with common codes.
  Factorization of univariate polynomials exists for several coefficient rings: 
  modulo primes in class <code>FactorModular</code>,
  over integers in class <code>FactorInteger</code>,
  over rational numbers in class <code>FactorRational</code>,
  over algebraic numbers in class <code>FactorAlgebraic&lt;C&gt;</code> and 
  over rational functions in class <code>FactorQuotient&lt;C&gt;</code> 
  (where for the last two classes <code>C</code> can be any other ring for which the 
  <code>FactorFactory. getImplementation</code> returns an implementation).
  Multivatiate polynomials are reduced to the univariate polynomials via Kronecker substitution 
  and are therefore not very efficient at the moment.
  The factorization of polynomials is partly experimental.
</p>
<p>
  To choose the correct implementation always use the factory classes 
  <code>GCDFactory</code>, <code>SquarefreeFactory</code> and <code>FactorFactory</code>
  with methods <code>getImplementation()</code> or <code>getProxy()</code>.
  These methods will take care of all possible (implemented) coefficient rings properties.
  The polynomial coefficients must implement the <code>GcdRingElem</code> interface and 
  so must allow greatest common divisor computations.
  Greatest common divisor computation is completely generic and works for any 
  implemented integral domain.
  If special, optimized implementations exist they will be used.
  Squarefree decomposition is also completely generic and works for any 
  implemented integral domain. There are no special, optimized implementations.
  Factorization is generic relative to the implemented ring constructions: algebraic field extensions 
  and transcendent field extensions. Implemented base cases are modular coefficient, integer coefficients 
  and rational number coefficients.
</p>
<p>
  The implementation follows 
  Geddes &amp; Czapor &amp; Labahn <em>Algorithms for Computer Algebra</em>
  and Cohen <em>A Curse in Computational Algebraic Number Theory</em>.
  See also Kaltofen <em>Factorization of Polynomials</em> in Computing Supplement, 
  <em>Springer, 1982</em>,
  Davenport &amp; Gianni &amp; Trager <em>Scratchpad's View of Algebra II: A Categorical View of Factorization</em>
  in <em>ISSAC'91</em>
  and the <a href="http://krum.rz.uni-mannheim.de/mas/src/" target="mas.src">ALDES/SAC2 code</a>
  as contained in <a href="http://krum.rz.uni-mannheim.de/mas/" target="mas">MAS</a>.
</p>

    <hr />
    <address><a href="mailto:kredel at rz.uni-mannheim.de">Heinz Kredel</a></address>
<p>
<!-- Created: Sun Mar  4 16:46:52 CET 2007 -->
<!-- hhmts start -->
Last modified: Sun Apr 11 23:18:03 CEST 2010
<!-- hhmts end -->
</p>
<p>$Id: package.html 3072 2010-04-11 21:39:11Z kredel $ 
</p>
  </body>
</html>
